.TH focus-link.pl 1
.SH  NAME
focus-link.pl - perl FvwmCommand script
.SH  SYNOPSIS
focus-link.pl [-v]
.SH  OPTION
-v  show version number and exit.
.SH  DESCRIPTION
This is a user programmable window focus script.
It requires FvwmCommand version 1.5 or later.
FvwmCommandS must be invoked from fvwm prior to this command.

This script can be invoked from a shell or from .fvwm2rc. For example.

   AddToFunc "InitFunction"
   + "I" Exec exec xcb -n 4 -l vertical -g 240x180-0+530
   + "I" Exec sleep 2; $HOME/scripts/focus-link.pl

Sleep is used in order to avoid un-necessary reaction during initial
window creation. Note, fvwm itself continues to run during these 2 seconds.

Default behavior is listed below.
In order to change the behavior, modify user_function using user
functions.
.IP 1.
When a window is opened up, focus the window and move the pointer
to it. The parent window regains focus when a window is closed.
Parenthood is determined when a window is opened. It is the last
focused window with the same X class.
.IP 2.
#1 would not occur to AcroRead opening window.
.IP 3.
#1 would not occur when SkipMapping is set and the window is the
only window of its class.
.IP 4.
For Netscape find dialog window, addition to #1, resize the window
to 300x150 pixels and move it to East edge of the screen.
Download/upload windows will not be focused nor be in focus link
list.
.IP 5.
Move appletviewer to NorthWest corner.
.IP 6.
Xterm won't focus back to its parent after closed.
.IP 7.
When a window is de-iconified, focus it and move the pointer.

.SH  USER FUNCTIONS
These are collection of functions a user can call from programmable
section.
.SS  move_window [<id>] <direction>
  or
.SS  move_window [<id>] <x> <y>

If <id> is prensent in hex format, then move <id> window.
Otherwise, move the window in question.

If <y> is present, move window to <x> <y> in percentage of screen.

If 'p' is appended to <width> or <height>, it specifies in
pixel count. And, if <width'p'> or <height'p'> is lead with '-',
it signifies that pixel count from right or bottom edge.

If <y> does not exist, <dir> must be one of North Northeast East
Southeast South Southwest West Northwest to move window to edge.
.SS  resize_window [<id>] <width> <height>

Resize window to <width> and <height> in percentage of screen size.

If <id> is not null, resize <id>. Otherwise resize the
window in question.

Letter 'p' can be appended to <width> and <height> to specify in
pixel count.
.SS  focus_window [<id>]

If <id> is not null, focus on <id>.
Otherwise, focus on the window in question.
.SS  warp_to_window [<id>] [<x> <y>]

Move pointer to window.

If <id> is a window id, warp to <id>.
Otherwise, warp to the window in question.

If <x> and <y> are present, warp to <x> and <y> percentage of window
size down and in from the upper left hand corner.

Letter 'p' can be appended to <width> and <height> to specify in pixel
count.
.SS  class_matches <class> [<resource>]

Check if window class and optional resource match.

If arg1 is present, and if class matches with <class> and resource
matches with <resource>, then return 1.

If arg1 is not present, and if class matches with <class> then
return 1.
Otherwise, return null.
.SS  window_flag [<id>] <flag>

Return 1 if <flag> is true in the window in question.
If <id> is not null, check on <id>. Otherwise check on the
window in question.
<flag> must be a exact match to one of these:

  StartIconic
  OnTop
  Sticky
  WindowListSkip
  SuppressIcon
  NoiconTitle
  Lenience
  StickyIcon
  CirculateSkipIcon
  CirculateSkip
  ClickToFocus
  SloppyFocus
  SkipMapping
  Handles
  Title
  Mapped
  Iconified
  Transient
  Visible
  IconOurs
  PixmapOurs
  ShapedIcon
  Maximized
  WmTakeFocus
  WmDeleteWindow
  IconMoved
  IconUnmapped
  MapPending
  HintOverride
  MWMButtons
  MWMBorders
.SS  resource_matches <resource>
Check if window resource matches pattern <resource>.
If it matches, return 1.
Otherwise return null.
.SS  action_was <action>
Check if <action> was taken place.

<action> must be a exact match to one of these:

  new page
  new desk
  add
  raise
  lower
  focus change
  destroy
  iconify
  deiconify
  windowshade
  dewindowshade
  end windowlist
  icon location
  end configinfo
  string
.SS  get_parent_window [<id>]

Return parent window id.

If <id> is not null, check on <id>. Otherwise check on the
window in question.
.SS  no_parent_window [<id>]

Return 1 if no parent window exits.

If <id> is not null, check on <id>. Otherwise check on the
window in question.
.SS  delete_from_list

Delete the window from link list
.SH  SEE ALSO
FvwmCommand
.SH  AUTHOR
Toshi Isogai  isogai@ucsub.colorado.edu
